package user

import (
	"gitee.com/xiaoyutab/gatway/config"
	"gitee.com/xiaoyutab/xgotool/optional/xcache"
	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 修改用户密码
//
//	id		用户ID
//	pass	修改后的密码信息
//	ipaddr	修改时的用户客户端IP
func ResetPass(id uint, pass, ipaddr string) error {
	inf, err := GetInfoById(id)
	if err != nil {
		return err
	}
	// 进行密码重置
	inf.RandCode = GetRand()
	pass_new, err := Passwd(pass, inf.RandCode)
	if err != nil {
		return err
	}
	inf.Password = pass_new
	// 进行数据存储
	db := config.DB.Table(inf.TableName()).Save(inf)
	if db.Error != nil {
		return xerror.To(err)
	}
	if db.RowsAffected <= 0 {
		return xerror.New("用户密码修改失败")
	}
	// 日志记录
	Log(id, 2, ipaddr)
	xcache.SetStruct(xcache.Key("service.user.get.info.by.id", inf.Id), inf)             // 用户ID缓存
	xcache.SetStruct(xcache.Key("service.user.get.info.by.username", inf.Username), inf) // 用户Username缓存
	return nil
}
